#include <REGX52.H>

/**
 * 为什么定义必须放外面
 * sbit定义的是特殊功能寄存器的位，这些位在硬件层面有固定的地址，
 * 在程序编译时就需要确定它们的位置，不能在运行时动态分配。
 * 注意运行时动态分配的含义，也就是在main方法执行的时候，
 * 反复改变一个变量对应的映射，是不被允许的
 * 格式化代码ctrl+alt+l
 */
// sbit led = P1 ^ 1; // 初始化
//  sbit led = P2 ^ 0; // 初始化
// void delay_ms(unsigned int ms) // 延迟函数，下面调用只需要输入延迟时间即可
// {
//     unsigned int i, j;
//     for (i = 0; i < ms; i++)
//     {
//         for (j = 0; j < 123; j++)
//             ;
//     }
// }
// sbit BTN = P3 ^ 6;

sbit led = P2 ^ 0;

void main()
{

    // 点亮 LED
    led = 0;

    // 方式2
    P2_0 = 0;

    // 以下为开发板实验案例
    /*
    //流水灯
    unsigned char i;
    // 0000 0001
    unsigned char temp = 0x01;
    // 全部置为0，熄灭
    P2 = 0x00;
    while (1)
    {

        for (i = 0; i < 8; i++)
        {
            P2 = temp;
            delay_ms(200);
            // temp = temp << 1;
            temp <<= 1;
        }
        temp = 0x80;

        for (i = 0; i < 8; i++)
        {
            P2 = temp;
            delay_ms(200);
            temp >>= 1;
        }
        temp = 0x01;
    }
    */

    /*
    //按键控制小灯亮灭
    P2_4 = 0;

    while (1)
    {
        P2_4 = 0;
        if (BTN == 0)
        {
            delay_ms(20);
            if (BTN == 0)
            {
                P2_4 = 1; // 1是高电平，0是低电平
                delay_ms(500);
                while (BTN == 0)
                    ;
            }
        }
    }
    */
}